package main

import (
	"fmt"
	"sync"
	"time"
)

func main() {
	// 使用defer语句在main函数末尾按顺序执行打印语句
	// 先定义的后执行，后定义的先执行，栈的结构
	defer fmt.Println("1")
	defer fmt.Println("2")
	defer fmt.Println("3")

	// 调用loopFunc函数，该函数的具体功能未知
	loopFunc()

	// 使程序暂停1秒，以便在调用loopFunc后留出时间进行观察或处理
	time.Sleep(time.Second)
}

func loopFunc() {
	lock := sync.Mutex{}
	for i := 0; i < 3; i++ {
		go func(i int) {
			lock.Lock()
			defer lock.Unlock()
			fmt.Println("loopFunc", i)
		}(i)
	}
}
